package leetcode.code0225;

import java.util.LinkedList;
import java.util.Queue;

public class MyStack extends Solution225 {

	private Queue<Integer> q1;
	private Queue<Integer> q2;

	public MyStack() {
		q1 = new LinkedList<>();
		q2 = new LinkedList<>();
	}

	public void push(int x) {
		if (!q1.isEmpty()) {
			q1.add(x);
		} else {
			q2.add(x);
		}
	}

	public int pop() {
		return q1.isEmpty() ? pop(q2, q1) : pop(q1, q2);
	}

	public int top() {
		return q1.isEmpty() ? top(q2, q1) : top(q1, q2);
	}

	public boolean empty() {
		return q1.isEmpty() && q2.isEmpty() ? true : false;
	}

	private int pop(Queue<Integer> full, Queue<Integer> empty) {
		while (!full.isEmpty()) {
			if (full.size() == 1)
				return full.poll();
			empty.add(full.poll());
		}
		return 0;
	}

	private int top(Queue<Integer> full, Queue<Integer> empty) {
		while (!full.isEmpty()) {
			int ans = full.poll();
			empty.add(ans);
			if (full.isEmpty()) {
				return ans;
			}
		}
		return 0;
	}

	public static void main(String[] args) {
		MyStack ms = new MyStack();
		ms.push(1);
		ms.push(2);
		System.out.println(ms.top());
		System.out.println(ms.pop());

	}

}
